﻿// 1393. 围栏圈.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//

#include <iostream>


/*

https://www.acwing.com/problem/content/1395/

农夫布朗的农场上的围栏已经失控了。

围栏共有 N 段，可以看作 N 个线段，这些线段仅在端点处与其他线段相连。

有时，一个端点上可能会连接两段以上的围栏。

这些围栏就像是一张大网一样，将农场分割为了若干个部分，给布朗带来了很大的麻烦。

布朗将这 N 段围栏依次编号为 1∼N。

对于这 N 段围栏，布朗知道以下信息：

每段围栏的长度
每段围栏的一端连接到的所有围栏段
每段围栏的另一端连接到的所有围栏段
没有围栏和自己首尾相连。

现在，他想知道被围栏分割出的部分之中哪个部分的周长最小。

你能帮帮他吗？

例如，一个农场的具体围栏分布图如下所示，围栏已被编号 1∼10：

           1
   +---------------+
   |\             /|
  2| \7          / |
   |  \         /  |
   +---+       /   |6
   | 8  \     /10  |
  3|     \9  /     |
   |      \ /      |
   +-------+-------+
       4       5
我们可以看出，被 2,7,8 号围栏围起来的部分周长最小。

输入格式
第一行包含一个整数 N，表示共有 N 段围栏。

接下来包含 N 组数据，描述每段围栏的信息。

每组数据的第一行包含四个整数，s,Ls,N1s,N2s，分别表示这段围栏的编号，长度，一个端点连接的围栏段数，另一个端点连接的围栏段数。

第二行包含 N1s 个整数，表示一端连接的所有围栏的编号。

第二行包含 N2s 个整数，表示另一端连接的所有围栏的编号。

输出格式
输出一个整数，表示被围栏围起来的部分之中，周长最小的那个部分的周长。

数据范围
1≤N≤100,
1≤s≤N,
1≤Ls≤255,
1≤N1s,N2s≤8
输入样例：
10
1 16 2 2
2 7
10 6
2 3 2 2
1 7
8 3
3 3 2 1
8 2
4
4 8 1 3
3
9 10 5
5 8 3 1
9 10 4
6
6 6 1 2
5
1 10
7 5 2 2
1 2
8 9
8 4 2 2
2 3
7 9
9 5 2 3
7 8
4 5 10
10 10 2 3
1 6
4 9 5
输出样例：
12
*/
int main()
{
    std::cout << "Hello World!\n";
}

 